package com.zaimokuza.cn.mapper;

import com.github.pagehelper.Page;
import com.zaimokuza.cn.entity.auth.Resources;
import com.zaimokuza.cn.entity.auth.RoleResourcesRelation;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.ArrayList;

/**
 * @author zaimokuza
 */
@Mapper
public interface ResourcesMapper {

    /**
     * 增加资源
     *
     * @param resources 资源信息
     */
    void insertRecord(Resources resources);

    /**
     * 批量添加角色资源关联信息
     *
     * @param roleResourcesRelation 角色及对应的资源信息
     */
    void insertBatchRoleResourcesRelation(RoleResourcesRelation roleResourcesRelation);

    /**
     * 更新资源
     *
     * @param resources 资源信息
     */
    void updateRecord(Resources resources);

    /**
     * 根据ID删除资源
     *
     * @param id 资源ID
     */
    void deleteRecord(Long id);

    /**
     * 根据资源ID批量删除角色资源关联关系
     *
     * @param resourcesId 资源ID
     */
    void deleteBatchRoleResourcesRelationByResourcesId(Long resourcesId);

    /**
     * 根据角色ID批量删除角色资源关联关系
     *
     * @param roleId 角色ID
     */
    void deleteBatchRoleResourcesRelationByRoleId(String roleId);

    /**
     * 根据用户ID查询资源信息
     *
     * @param userId 用户ID
     * @return 资源信息集合
     */
    ArrayList<Resources> queryResourcesByUserId(String userId);

    /**
     * 查询资源对应路径信息集合
     *
     * @return 路径信息集合
     */
    ArrayList<Resources> queryResourcesUrlList();

    /**
     * 根据角色ID查询资源ID集合
     *
     * @param roleId 角色ID
     * @return 资源ID集合
     */
    ArrayList<Long> queryResourcesIdListByRoleId(String roleId);

    /**
     * 查询资源分页信息
     *
     * @param name 名称
     * @param url  请求路径
     * @param type 类型
     * @return 资源信息
     */
    Page<Resources> queryResourcesPage(@Param("name") String name, @Param("url") String url, @Param("type") Integer type);

    /**
     * 根据资源ID查询资源详情
     *
     * @param id 资源ID
     * @return 资源信息
     */
    Resources queryResources(Long id);

}
